<?php
//conecta ao banco de dados
require_once("conexao.php");
require_once("unidade.php");
require_once("insumo.php");
require_once("legislacao.php");
require_once("fluxoProcesso.php");
require_once("etapa.php");

$STATUS = array("1" => "Aberto", "2" => "Finalizado","3" => "Validado","4" => "Concluido","5" => "Certificado");
$STATUS_MENSAGEM = array("1" => "Aberto", "2" => "Finalizado","3" => "Validado","4" => "Concluido","5" => "Certificado");
$COR_STATUS = array("1" => "#093", "2" => "#986600","3" => "#3333DD","4" => "#00FAAAF","5" => "#666444");


function criarProcesso ($idUnidade, $nome, $rf, $ad, $tr, $co, $avaliacaorecursos, $respPreenchimento)
{
	$data =  date("Y-m-d H:i:s");
	
	if ($rf == -1 || $ad == -1 ||$tr == -1 ||$co == -1 ||$avaliacaorecursos == -1) {
		$atendimentocriterios = 0;
		$avaliacaofinal = 0;
	}
	else {
		$atendimentocriterios = $rf + $ad + $tr + $co;
		$avaliacaofinal = $atendimentocriterios * $avaliacaorecursos;
	}
	
	$sql = "insert into processo (fk_unidade, nome, data, rf, ad, tr, co, atendimentocriterios, avaliacaorecursos, avaliacaofinal, respPreenchimento, fk_usuario_cad, status) 
	VALUES ($idUnidade, '$nome', '$data', $rf, $ad, $tr, $co, $atendimentocriterios, $avaliacaorecursos, $avaliacaofinal, '$respPreenchimento', $_SESSION[sessao_id_usuario], 1)";	   
	//die ($sql);
	$rs 	= mysql_query($sql); 
	
	return $rs;	
}
function atualizaProcesso ($idProcesso, $idUnidade, $nome, $rf, $ad, $tr, $co, $avaliacaorecursos, $respPreenchimento)
{
	if ($rf == -1 || $ad == -1 ||$tr == -1 ||$co == -1 ||$avaliacaorecursos == -1) {
		$atendimentocriterios = 0;
		$avaliacaofinal = 0;
	}
	else {
		$atendimentocriterios = $rf + $ad + $tr + $co;
		$avaliacaofinal = $atendimentocriterios * $avaliacaorecursos;
	}
	
	$sql = "update processo set fk_unidade = $idUnidade, nome = '$nome', rf = $rf, ad = $ad, tr = $tr, co = $co, avaliacaorecursos = $avaliacaorecursos, 
	respPreenchimento = '$respPreenchimento', fk_usuario_cad = $_SESSION[sessao_id_usuario], 
	atendimentocriterios = $atendimentocriterios, 
	avaliacaofinal = $avaliacaofinal
	where processo.idProcesso = $idProcesso";
	//die ($sql);
	$rs 	= mysql_query($sql); 
	
	return $rs;
}
function atualizaProcessoAmbiente ($idProcesso,  $nome_temp_bpm, $fluxobpm,  $resultadofinal, $normaslegislacao, $tempomedio, $justempomedio, $fonteinf, $percentualfinalizados, $juspercentualfinalizados, $processosvinculado)
{
	if ($fluxobpm == "")
		$sql = "update processo set  resultadofinal = '$resultadofinal', normaslegislacao = '$normaslegislacao', tempomedio = '$tempomedio', justempomedio = '$justempomedio', fonteinf = '$fonteinf', percentualfinalizados = '$percentualfinalizados', juspercentualfinal = '$juspercentualfinalizados',
	processosvinculado = '$processosvinculado'
	where processo.idProcesso = $idProcesso";
	else
		$sql = "update processo set  fluxobpm = '$fluxobpm', resultadofinal = '$resultadofinal', normaslegislacao = '$normaslegislacao', tempomedio = '$tempomedio', justempomedio = '$justempomedio', fonteinf = '$fonteinf', percentualfinalizados = '$percentualfinalizados', juspercentualfinal = '$juspercentualfinalizados',
	processosvinculado = '$processosvinculado' , nomearqbpm = '$nome_temp_bpm'
	where processo.idProcesso = $idProcesso";
	//die ($sql);
	$rs 	= mysql_query($sql); 
	
	return $rs;
}
function atualizaValidacaoProcesso ($idProcesso, $descricaosolucao, $ata, $descricaorisco)
{
	$data =  date("Y-m-d H:i:s");
	
	$sql = "update processo set descricaosolucao = '$descricaosolucao', ata = '$ata', descricaorisco = '$descricaorisco', dataata = '$data'
	where processo.idProcesso = $idProcesso";
	//die ($sql);
	$rs = mysql_query($sql); 
	
	return $rs;
}

function validaQuestionariosProcesso ($idProcesso)
{
	$data =  date("Y-m-d H:i:s");
	
	$sql = "update processo set datavalidaquestionario = '$data', status = 4
	where processo.idProcesso = $idProcesso";
	//die ($sql);
	$rs = mysql_query($sql); 
	
	return $rs;
}

function mudaStatus ($idProcesso, $status)
{
	$data =  date("Y-m-d H:i:s");
	
	$sql = "update processo set datastatus = '$data', status = $status where processo.idProcesso = $idProcesso";
	//die ($sql);
	$rs = mysql_query($sql); 
	
	return $rs;
}

//Lista todos os processos da unidade
function listaProcessosUnidade ($idUnidade)
{
	$sql = "select * from processo where processo.fk_unidade = $idUnidade order by nome";	   
	$rs 	= mysql_query($sql); 
	
	return $rs;
}

//Lista todos os processos da unidade e das abaixo dela
//A verificação é feita pegando todos os processos cadastrados e verificando se a unidade dele ou algum parente dele de nivel acima é a unidade da verificada
function listaTodosProcessosUnidade ($idUnidade, $status)
{
	$proc = NULL;
	$cont =0;
	
	$todosProcessos = listaProcessos ();
	//Percorre todos processos cadastrados no sistema
	while ($linha = mysql_fetch_array($todosProcessos)) {
		$idUnidadeProc = $linha['fk_unidade'];
		$statusProc = (int) $linha['status'];
			
		//O processo é dessa unidade entao guarde ele no array
		if ( ($idUnidadeProc == $idUnidade || $idUnidade == NULL || $idUnidade == 0) && ( $status == 0  || $status == $statusProc)  )
		{
			$proc[$cont] = $linha;
			++$cont;
		}
		//Verifica os decendentes superiores
		else 
		{
			while (1) {
				$paiUnidade = obterPai ($idUnidadeProc);
				
				//Tem pai
				if ($paiUnidade) 
				{
					$idUnidadePai = $paiUnidade['idUnidade'];	
					
					//O processo é dessa unidade entao guarde ele no array e sai do loop
					if ( ($idUnidadePai == $idUnidade || $idUnidade == NULL || $idUnidade == 0) && ($status == 0  || $status == $statusProc)  )
					{
						$proc[$cont] = $linha;
						++$cont;
						break;
					}
					$idUnidadeProc = $idUnidadePai;
				}
				else
					break;
			}
		}		
	}
	return $proc;
}

function listaProcessos ()
{	
	$sql = "select * from processo order by avaliacaofinal DESC";	   
	$rs 	= mysql_query($sql); 
	
	return $rs;
}

function obterProcessosDoOrgao ($idOrgao)
{
	$sql = "select distinct
	processo.*
	from unidade org, unidade sup, unidade ger, unidade coor, processo where 
	org.idUnidade = $idOrgao and
	sup.fk_unidade_pai = org.idUnidade and
	ger.fk_unidade_pai = sup.idUnidade and
	coor.fk_unidade_pai = ger.idUnidade";	   
	$rs 	= mysql_query($sql); 
	//die ($sql);
	return $rs;
}
function obterDadosProcesso ($idProcesso)
{
	$proc = NULL;
	$cont =0;
	
	$sql = "select * from processo where processo.idProcesso = $idProcesso";	   
	$rs 	= mysql_query($sql); 
	
	while ($linha = mysql_fetch_array($rs))
		$proc[$cont] = $linha;
		
	return $proc;
}

function obterProcesso ($idProcesso)
{
	$sql = "select * from processo where processo.idProcesso = $idProcesso";	   
	$rs 	= mysql_query($sql); 
	
	if ($rs) {
		$dados = mysql_fetch_array($rs);
		return $dados;
	}
	
	return 0;
}

//Retorna nome do processo
function obterNomeProcesso ($idProcesso)
{
	$sql = "select processo.nome from processo where processo.idProcesso = $idProcesso";
	$rs 	= mysql_query($sql); 
	
	if ($rs) {
		$dados	= mysql_fetch_array($rs);
		return $dados['nome'];
	}
	return $rs;
}

//Retorna se o processo ja foi validado
function obterStatus ($idProcesso)
{
	$sql = "select processo.status from processo where processo.idProcesso = $idProcesso";
	$rs 	= mysql_query($sql); 
	
	if ($rs) {
		$dados	= mysql_fetch_array($rs);
		return $dados['status'];
	}
	return 0;
}
//Procura pendencias no processo
function pendenciasProcesso ($idProcesso)
{
	global $STATUS;
	
	$questoes = "";
	$existe = 0;
	$todasPerguntas = listaPerguntas ();
	$quantPerguntas = mysql_num_rows($todasPerguntas);
	$nomeProcesso = obterNomeProcesso ($idProcesso);
	$statusProc = obterStatus ($idProcesso);
	$textoStatus = $STATUS[$statusProc];
	
	$pendencias = 'Pend\u00eancias do '. $nomeProcesso. ' :\n\n';
	$pendencias .= 'O status do processo \u00e9 '.$textoStatus.'.\n\n';
	$pendencias .= 'Passos Decis\u00f3rios :\n\n';

	$etapas = listaEtapasProcesso ($idProcesso);
	$qtEtapa = mysql_num_rows($etapas);
	
	if ($qtEtapa == 0) {
		$existe = 1;
		$pendencias .= 'Nenhum passo. ';
	}
			
	while ($l = mysql_fetch_array($etapas)) 
	{
		$momePasso = $l['identPasso'];
		$numEtapa = $l['numeracao'];
		
		$questionarios = obterQuestionariosEtapa ($l['idEtapas']);
		$percentualRespondido = 0;	
		$questoes = "";
		
		if ($linha = mysql_fetch_array($questionarios))
			$idQuestionario = $linha['idQuestionario'];
		else
			$idQuestionario = 0;
	
		$respotasQuest = obterRespostasQuestionario ($idQuestionario);
		$quantRespondidas = mysql_num_rows($respotasQuest);
		
		$percentualRespondido = number_format( ($quantRespondidas/$quantPerguntas) * 100, 0);
			
		for ($i=1; $i<= $quantPerguntas; $i++) 
		{
			$respondido = obterRespostasQuestionarioPergunta ($idQuestionario, $i);
			if ($respondido == 0) {
				if ($questoes != "")
					$questoes .= ",";
				$questoes .= $i;
			}
			
		}
 
		if ($percentualRespondido < 100) {
			$pendencias .= $numEtapa.') ' .$momePasso. ': ' .$percentualRespondido. '% Respondido(s)\n\n';
			$pendencias .= "Quest\u00f5es nao respondidas: ".$questoes.'\n\n';
			$existe = 1;
		}
	}
	$questoes = "";

	$retorno[0] = $existe;
	$retorno[1] = $pendencias;

	return $retorno;
}
//Retorna se o processo ja foi validado
function validadoQuestProc ($idProcesso)
{
	$sql = "select processo.validadoquestionario from processo where processo.idProcesso = $idProcesso";
	$rs 	= mysql_query($sql); 
	
	if ($rs) {
		$dados	= mysql_fetch_array($rs);
		return $dados['validadoquestionario'];
	}
	
	return 0;
}

function excluiProcesso ($idProcesso)
{
	$sql = "delete from processo where processo.idProcesso = $idProcesso";
	
	$rs 	= mysql_query($sql); 
	
	return $rs;
}
function certificaProcesso ($idProcesso)
{
	$data =  date("Y-m-d H:i:s");
	
	$sql = "update processo set status = 5	where processo.idProcesso = $idProcesso";
	$rs = mysql_query($sql); 
	
	return $rs;
}

function finalizaProcessoUsr ($idProcesso)
{
	$data =  date("Y-m-d H:i:s");
	$sql = "update processo set status = 2	where processo.idProcesso = $idProcesso";
	$rs = mysql_query($sql); 
	
	return $rs;
}
function consultaProcessoPorVinculoENome ($idProcesso, $nome)
{
	$sql = "select * from processo where processo.nome = '$nome' and fk_processo_importado = $idProcesso";	   
	$rs 	= mysql_query($sql); 
	
	if ($rs) {
		$dados = mysql_fetch_array($rs);
		return $dados['idProcesso'];
	}
	
	return 0;
}
function criarProcessoVinculado ($idUnidade, $nome, $rf, $ad, $tr, $co, $avaliacaorecursos, $atendimentocriterios, $avaliacaofinal, $respPreenchimento, $idProcesso,
 $resultadofinal, $normaslegislacao, $tempomedio, $justempomedio, $fonteinf, $percentualfinalizados, $juspercentualfinal, $processosvinculado)
{
	$data =  date("Y-m-d H:i:s");
	
	$sql = "insert into processo (fk_unidade, nome, data, rf, ad, tr, co, atendimentocriterios, avaliacaorecursos, avaliacaofinal, respPreenchimento, fk_usuario_cad, status, fk_processo_importado,
	resultadofinal, normaslegislacao, tempomedio , justempomedio , fonteinf , percentualfinalizados, juspercentualfinal, processosvinculado) 
	VALUES ($idUnidade, '$nome', '$data', $rf, $ad, $tr, $co, $atendimentocriterios, $avaliacaorecursos, $avaliacaofinal, '$respPreenchimento', $_SESSION[sessao_id_usuario], 1, $idProcesso,
	'$resultadofinal', '$normaslegislacao', '$tempomedio' , '$justempomedio' ,'$fonteinf' , '$percentualfinalizados', '$juspercentualfinal', '$processosvinculado')";	   
	//die ($sql);
	$rs 	= mysql_query($sql); 
	
	return $rs;	
}
function importarProcesso ($idProcesso)
{
	//Consulta processo que ira importar
	$dadosProc = obterProcesso ($idProcesso);
	
	$nomeNovo = $dadosProc['nome']." - Importado";
	
	//Cria o novo processo 
	$rs = criarProcessoVinculado ($dadosProc['fk_unidade'], $nomeNovo, $dadosProc['RF'], $dadosProc['AD'], $dadosProc['TR'], $dadosProc['CO'], $dadosProc['avaliacaorecursos'], $dadosProc['atendimentocriterios'], $dadosProc['avaliacaofinal'], $dadosProc['respPreenchimento'], $idProcesso, $dadosProc['resultadofinal'], $dadosProc['normaslegislacao'], $dadosProc['tempomedio'], $dadosProc['justempomedio'], $dadosProc['fonteinf'], $dadosProc['percentualfinalizados'], $dadosProc['juspercentualfinal'], $dadosProc['processosvinculado']);
	
	$idProcNovo = consultaProcessoPorVinculoENome ($idProcesso, $nomeNovo);
	
	//Importar Insumos
	$rsInsumos = importarInsumosProcesso ($idProcesso, $idProcNovo);
	
	//Importar Legislação
	$rsLeg = importarLegislacaoProcesso ($idProcesso, $idProcNovo);
	
	//Importa o fluxo do processo
	$rsFluxo = importarFluxoProcesso ($idProcesso, $idProcNovo);
	
	//Importar Passos Decisórios
	$rsPassos = importarPassosProcesso ($idProcesso, $idProcNovo);
	
	return $rs;
	
}
//Retorna nome do processo
function exiteProcessoUnidade ($id, $nome, $idUnidade)
{
	$sql = "select nome from processo where processo.fk_unidade = $idUnidade and nome = '$nome' and idProcesso <> $id";
	$rs 	= mysql_query($sql); 
	
	if ($rs ) {
		$quant = mysql_num_rows($rs);
	
		if ($quant > 0) 
			return true;
	}
		
	return false;
}
//Processo tem algum vinculo
function processoTemVinculo ($idProcesso)
{
	$sql = "select * from processo where fk_processo_importado = $idProcesso";	   
	$rs 	= mysql_query($sql); 
	
	if ($rs ) {
		$quant = mysql_num_rows($rs);
	
		if ($quant > 0) 
			return true;
	}
	
	return 0;
}
?>